﻿using System;
using System.Collections.Generic;
using System.Text;
using Sinacor.Infra.Service.Validation;
using Sinacor.Infra.Service.Common;

namespace Sinacor.Servico.Bovespa.Corretagem.BusinessEntity
{
    /// <summary>
    /// Entidade de negocio ControleBeneficio
    /// </summary>
    public class ControleBeneficio : BaseBusinessEntity
    {
        #region Campos

        private const int RSCODIGOPOLITICA = 109538;
        private const int RSDATAINICIAL = 109539;
        private const int RSTIPOBENEFICIO = 109540;
        private const int RSVALORQTDE = 109562;

        /// <summary>
        /// Campo _codigoPoliticaCorretagem
        /// </summary>
        private int? _codigoPolitica;

        /// <summary>
        /// Campo _dataInicial
        /// </summary>
        private DateTime? _dataInicial;

        /// <summary>
        /// Campo _quantidadeValor
        /// </summary>
        private Decimal? _valorQuantidade;

        /// <summary>
        /// Campo _tipoControleBeneficio
        /// </summary>
        private BusinessEntity.TipoBeneficio _tipoControleBeneficio;

        #endregion

        #region Construtores

        /// <summary>
        /// Construtor ControleBeneficio
        /// </summary>
        public ControleBeneficio()
        {

        }

        /// <summary>
        /// Construtor ControleBeneficio
        /// </summary>
        public ControleBeneficio(int? codigoPolitica, DateTime? dataInicial, Decimal? quantidadeValor, BusinessEntity.TipoBeneficio tipoControleBeneficio)
        {
            this._codigoPolitica = codigoPolitica;
            this._dataInicial = dataInicial;
            this._valorQuantidade = quantidadeValor;
            this._tipoControleBeneficio = tipoControleBeneficio;
        }

        #endregion

        #region Propriedades

        /// <summary>
        /// Propriedade CodigoPoliticaCorretagem
        /// </summary>
        [NotNull(RSCODIGOPOLITICA)]
        public int? CodigoPolitica
        {
            get { return this._codigoPolitica; }
            set { this._codigoPolitica = value; }
        }

        /// <summary>
        /// Propriedade DataInicial
        /// </summary>
        [NotNull(RSDATAINICIAL)]
        public DateTime? DataInicial
        {
            get { return this._dataInicial; }
            set { this._dataInicial = value; }
        }

        /// <summary>
        /// Propriedade QuantidadeValor
        /// </summary>
        [NotNull(RSVALORQTDE)]
        public Decimal? ValorQuantidade
        {
            get { return this._valorQuantidade; }
            set { this._valorQuantidade = value; }
        }

        /// <summary>
        /// Propriedade TipoControleBeneficio
        /// </summary>
        [NotNull(RSTIPOBENEFICIO)]
        public BusinessEntity.TipoBeneficio TipoBeneficio
        {
            get { return this._tipoControleBeneficio; }
            set { this._tipoControleBeneficio = value; }
        }

        #endregion
    }
}

